🦠 Visualização de Dados da COVID-19¶
🏁 Introdução¶
Utilização de dados do AWS COVID-19 data lake para analisar informações precisas sobre a disseminação, mortes e vacinas do coronavírus (SARS-CoV-2).
Com esses dados, há a apresentação de diversas visualizações, explorando várias correlações entre eles. Destacam-se o gráfico de barras, que compara a disponibilidade de leitos hospitalares entre diferentes regiões, e o mapa interativo da linha do tempo, que mostra a evolução de mortes mundialmente.
O objetivo principal é compreender as informações obtidas no data lake e apresentar as visualizações mais eficazes para gerar insights pertinentes.
📚Importação das bibliotecas¶
import numpy as np
import pandas as pd
from io import StringIO
import plotly.express as px
import plotly.offline as pyo
pyo.init_notebook_mode()
from us_elections_president.filtered_data import elections_president_2020
from config.aws_config import session, BUCKET_NAME, BUCKET_FOLDER_HOSPITAL_BEDS, BUCKET_FOLDER_CASES_AND_DEATHS, BUCKET_FOLDER_GLOBAL_DEATHS, \
BUCKET_FOLDER_VACCINATED_PER_HUNDRED, BUCKET_FOLDER_VACCINES_AND_VACCINATED
🔒 Recuperando credenciais da AWS e configurando a conexão S3¶
def run_s3(bucket_folder):
s3_client = session.client('s3')
response = s3_client.list_objects_v2(Bucket=BUCKET_NAME, Prefix=bucket_folder)
if 'Contents' not in response:
print("No objects found in the bucket or the folder key is incorrect.")
return None
latest_obj = max(response['Contents'], key=lambda x: x['LastModified'])
response = s3_client.get_object(Bucket=BUCKET_NAME, Key=latest_obj['Key'])
data = response['Body'].read().decode('utf-8')
latest_data_frame = pd.read_csv(StringIO(data))
return latest_data_frame
data_frame = run_s3(BUCKET_FOLDER_HOSPITAL_BEDS)
fig = px.bar(data_frame,
x='hq_state',
y='total_staffed_beds',
color='hq_state',
labels={'hq_state': 'Estado', 'total_staffed_beds': 'Total de camas disponíveis'},
title='Estados Americanos e camas disponíveis')
pyo.iplot(fig, filename = 'available-beds')
2. Estados Americanos: Casos e Mortes¶
Linha do tempo pelos mêses de 2020 apresentando a evolução dos casos e mortes de americanos.
data_frame = run_s3(BUCKET_FOLDER_CASES_AND_DEATHS)
fig = px.scatter(data_frame,
x='total_cases',
y='total_deaths',
animation_frame='month',
animation_group='state_name',
color='state_name',
hover_name='state_name',
size='total_cases',
log_x=True,
size_max=55,
range_x=[min(data_frame['total_cases']), max(data_frame['total_cases'])*1.5],
range_y=[min(data_frame['total_deaths']), max(data_frame['total_deaths'])],
labels={'state_name':'Estado', 'month':'Mês', 'total_deaths':'Mortes', 'total_cases':'Casos'},
title='Evolução Mensal de Casos e Mortes por COVID-19 por Estado Americano')
pyo.iplot(fig, filename='us-cases-and-deaths')
3. Mortes mundialmente¶
Linha do tempo pelos mêses de 2020 retratando mortes ao redor do mundo causadas pelo COVID-19.
data_frame = run_s3(BUCKET_FOLDER_GLOBAL_DEATHS)
data_frame['log_scaled_deaths'] = np.log10(data_frame['deaths_on_last_day'] + 1) * 5
fig = px.scatter_geo(data_frame,
locations='country_name',
locationmode='country names',
template='seaborn',
color='country_name',
size='log_scaled_deaths',
hover_data={'deaths_on_last_day': True, 'log_scaled_deaths': False},
animation_frame='month',
projection="natural earth",
labels={'country_name':'País', 'month':'Mês', 'deaths_on_last_day':'Total de mortes no fim do mês'},
title="Evolução Mensal de Mortes por COVID-19 mundialmente",
size_max=10)
pyo.iplot(fig, filename='global-deaths')
4. Estados Americanos e a média de vacinas por 100 habitantes¶
Mesclado com as maiores quantidades de votos para partidos eleitorais nas eleições de 2020¶
10 Maiores e Menores médias de pessoas totalmente vacinadas nos Estados Americanos, mesclada com dados sobre os partidos mais votados nesses estados nas eleições preidenciais de 2020.
data_frame = run_s3(BUCKET_FOLDER_VACCINATED_PER_HUNDRED)
data_frame.rename(columns={'location':'Estado'}, inplace=True)
most_votes_by_party_df = elections_president_2020()
combined_elections_president_2020_with_averange_vaccinated_per_hundred_df = pd.merge(data_frame, most_votes_by_party_df, on='Estado', how='left')
combined_elections_president_2020_with_averange_vaccinated_per_hundred_df['party_simplified'] = combined_elections_president_2020_with_averange_vaccinated_per_hundred_df['party_simplified'].fillna('NO DATA')
combined_elections_president_2020_with_averange_vaccinated_per_hundred_df['should_render_party_simplified_and_votes'] = combined_elections_president_2020_with_averange_vaccinated_per_hundred_df['party_simplified'] != 'NO DATA'
combined_elections_president_2020_with_averange_vaccinated_per_hundred_df['hover_candidatevotes'] = combined_elections_president_2020_with_averange_vaccinated_per_hundred_df.apply(
lambda row: row['candidatevotes'] if row['should_render_party_simplified_and_votes'] else 'SEM INFORMAÇÕES',
axis=1
)
PARTY_COLORS = {
'REPUBLICAN': '#FF3333',
'DEMOCRAT': '#0033FF',
'LIBERTARIAN': '#FFFF33',
'NO DATA': '#CCCCCC'
}
fig = px.bar_polar(combined_elections_president_2020_with_averange_vaccinated_per_hundred_df,
r='average_fully_vaccinated_per_hundred',
theta='Estado',
color='party_simplified',
color_discrete_map=PARTY_COLORS,
hover_data={'party_simplified': True , 'hover_candidatevotes': True},
template='plotly_white',
labels={'average_fully_vaccinated_per_hundred': 'Média de pessoas totalmente vacinadas por 100 habitantes',
'party_simplified': 'Partido mais votado',
'hover_candidatevotes': 'Total de votos'},
title='As 10 Menores e Maiores Médias de Pessoas Totalmente Vacinadas por 100 Habitantes em Estados Americanos no mês 12/2022')
fig.add_annotation(
x=0, y=1.16,
xref="paper", yref="paper",
showarrow=False,
text='Coloridas pelo Partido Eleitoral que soma o maior número nas Eleições Presidenciais de 2020',
font=dict(size=16, color="black"),
align="center"
)
fig.update_layout(polar=dict(
bgcolor='rgba(255, 255, 255, 0.9)',
radialaxis=dict(showticklabels=False)),
font=dict(
family="Courier New, monospace",
size=10,
color="darkblue"
),
polar_angularaxis_rotation=90)
pyo.iplot(fig, filename='american-states-vaccines-and-votes-correlation')
5. Estados Americanos e a Quantidade de Doses Administradas por Pessoas Totalmente Vacinadas¶
Gráfico de área que demonstra a diferença entre a quantidade de doses e a quantidade de pessoas totalmente vacinadas.
data_frame = run_s3(BUCKET_FOLDER_VACCINES_AND_VACCINATED)
fig = px.area(data_frame,
x='location',
y=['people_fully_vaccinated', 'total_vaccinations'],
labels={'location':'Estado',
'variable': 'Métrica',
'people_fully_vaccinated':'Total de doses administradas',
'total_vaccinations':'Pessoas totalmente vacinadas' },
title='Total de vacinas providenciadas ao Estado e Pessoas Totalmente Vacinadas em maio de 2023')
fig.update_layout(yaxis_title='Número de Vacinações')
pyo.iplot(fig, filename='american-states-doses-allocated-fully-vaccinated-people-correlation')
🏁Conclusão¶
Através dessa análise abrangente dos dados provenientes do AWS COVID-19 data lake, é notório a identificação de padrões críticos e correlações significativas que informam a situação passada mundialmente.
Principais Descobertas:¶
As flutuações mensais nos casos de COVID-19 e nas taxas de mortalidade revelam um padrão claro de ondas pandêmicas.
As regiões com menor capacidade hospitalar e menor acesso à vacinação experienciaram taxas de mortalidade significativamente mais altas, sugerindo que a desigualdade no acesso ao cuidado de saúde e a vacinas é um fator crítico na determinação dos resultados da saúde.
Houve uma correlação entre estados com mais vacinas aplicadas e votos em candidatos democratas.
Existe uma disparidade entre a quantidade de vacinas alocadas e a quantidade de pessoas totalmente vacinadas nos Estados Americanos. Os estados recebem vacinas mas nem todas as pessoas tomam todas as doses de vacinas.
Implicações:¶
Esses padrões sublinham a necessidade de políticas públicas adaptadas que respondam às características demográficas e às capacidades de saúde locais. O sucesso na redução dos picos de infecção e na minimização do impacto nos serviços de saúde depende crucialmente de respostas rápidas e bem informadas às tendências emergentes da pandemia.